//
//  YSLTextField.m
//  iOS-百思不得哥
//
//  Created by lanou on 16/7/8.
//  Copyright © 2016年 杨斯霖. All rights reserved.
//

#import "YSLTextField.h"


//占位符文字颜色
static NSString * const YSLPlaceholderColorKeyPath = @"_placeholderLabel.textColor";

@implementation YSLTextField

//方法1
//- (void)drawPlaceholderInRect:(CGRect)rect
//{
//    [self.placeholder drawInRect:rect withAttributes:@{NSForegroundColorAttributeName:[UIColor grayColor],NSFontAttributeName:self.font}];
//}

//方法2
#pragma mark - 运行时(Runtime)
//苹果官方的一套C语言库
//能做很多底层操作(比如访问隐藏的一些成员变量/成员方法)

//先利用运行时查看需要用到隐藏的属性
/*
+ (void)initialize
{
    unsigned int count = 0;
    
    //拷贝出所有的成员变量列表  Ivar *ivars指向首位成员变量的指针
   Ivar *ivars =  class_copyIvarList([UITextField class], &count);
    
//    class_copyMethodList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>) 拷贝这个类所有的方法
    
//    class_copyPropertyList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>) 拷贝这个类所有的属性
    
    
    for (int i = 0; i < count; i++) {
        //取出成员变量
      Ivar ivar =  *(ivars + i);
        
    //Ivar ivar =  ivars[i]; 等价于上一句 这是数组的形式
        //打印成员变量名字
        YSLLog(@"%s <_______> %s",ivar_getName(ivar),ivar_getTypeEncoding(ivar));
    }

    //释放
    free(ivars);

}
*/

/*
+ (void)initialize
{
    unsigned int count = 0;
    objc_property_t *properties = class_copyPropertyList([UITextField class], &count);
    for (int i = 0; i < count; i++) {
        //取出属性
        objc_property_t property =  *(properties + i);
        
        //Ivar ivar =  ivars[i]; 等价于上一句 这是数组的形式
        //打印属性名字  获取属性的类型
        YSLLog(@"%s <_______> %s",property_getName(property),property_getAttributes(property));
        
    }

    free(properties);
}
*/
/*********************************************************************/
- (void)awakeFromNib
{

//    UILabel *placeholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
//    placeholderLabel.textColor = [UIColor redColor];
    
//    //修改占位符文字颜色
//    [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
    
    //设置光标颜色和文字颜色一致
    self.tintColor = self.textColor;
    
    //不成为第一响应者
    [self resignFirstResponder];
    
}

////重写选中高亮状态  不适用我们的需求
//- (void)setHighlighted:(BOOL)highlighted {
//
//    [self setValue:self.textColor forKeyPath:@"_placeholderLabel.textColor"];
//}


#pragma mark - 当前文本框聚焦时会调用
//重写第一响应者
- (BOOL)becomeFirstResponder
{
    //修改占位符文字颜色
    [self setValue:self.textColor forKeyPath:YSLPlaceholderColorKeyPath];
    return [super becomeFirstResponder];
}
#pragma mark - 当前文本框失去聚焦时会调用
//重写放弃第一响应者
- (BOOL)resignFirstResponder
{
    //修改占位符文字颜色
    [self setValue:[UIColor grayColor] forKeyPath:YSLPlaceholderColorKeyPath];
    return [super resignFirstResponder];
}


//- (void)setPlaceholderColor:(UIColor *)placeholderColor
//{
//    _placeholderColor = placeholderColor;
//    //修改占位符文字颜色
//    [self setValue:placeholderColor forKeyPath:YSLPlaceholderColorKeyPath];
//
//    
//}





@end
